Computer system components continue to become smaller and less expensive, and as a result portable devices such as cell phones and personal digital assistants have become more powerful. As portable devices grow in capability, so too does the complexity of applications developed for use on such devices.
The Java programming language is a popular tool for writing these applications because it is platform-independent, an advantage considering the many different types of portable devices that are in use. However, platform-independent Java applications can be relatively large. Although current generation portable devices are more powerful than their predecessors, they still have their limitations. Hence, a platform-independent Java application can be relatively slow to run.
One way to make a platform-independent Java application smaller in size and quicker to run is to modify it into a version that is somewhat, if not entirely, device-specific. For example, a Java application can be made to run more efficiently on a particular brand of portable device by stripping out parts of the application not used by that brand of device.
There are technologies available to help developers of Java applications take a platform-independent application and make it more specific to a particular target device. However, the applications produced by these technologies are no longer platform-independent. Developers have to apply these technologies over and over to produce many different versions of the Java application in order to accommodate the wide variety of possible targets. In essence, the advantage of platform-independence is negated. Instead, application developers are faced with the burden of creating, providing and maintaining many different device-specific Java applications.
Consider the effort associated with updating a particular Java application, perhaps to incorporate a new feature or to correct a flaw. The developer has to either update many different device-specific versions, or generate anew many different device-specific versions once the platform-independent version has been updated.
In addition, new devices are continually being designed and brought to market. Again, the application developer is faced with the task of creating and maintaining another device-specific version each time a new type of device is introduced.
Therefore, a method and/or system that can facilitate the marriage of platform-independent Java applications and the variety of devices that implement such applications would be of value. A method and/or system that can accomplish this without overly burdening application developers or taxing the resources of portable devices would also be valuable. Embodiments of the present invention provide these advantages.